This is Kara’s quick first pass at looking at the Taves data, looking only at participant’s endorsements of whether or not they had had certain experiences (not their assessment of what they meant, etc.).

Notes: per our conversation with Nikki, we are dropping one question (#53), which was a repeated question in all sites except for China.

Overall counts

First, let’s look at the overall counts of “yes” responses, by site:

Joining, by = "taves_subj"
  taves_ctry   n     mean        sd median
1         US 104 15.92308  9.919768   15.5
2   Thailand 106 18.32075 11.491237   16.5
3      China  95 21.46316 12.390637   21.0
4      Ghana 134 22.85821 12.854392   21.5
5    Vanuatu  99 28.41414 12.277414   28.0

And now let’s compare each country to the country with the next-most “yes” responses: contrast #1 will be US vs. Thailand, #2 will be Thailand vs. China, etc.:


Call:
lm(formula = total ~ taves_ctry, data = d_counts)

Residuals:
    Min      1Q  Median      3Q     Max 
-28.414  -7.391  -0.463   7.586  40.679 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  21.3959     0.5157  41.488  < 2e-16 ***
taves_ctry1   1.1988     0.8196   1.463 0.144133    
taves_ctry2   1.4471     0.4895   2.956 0.003252 ** 
taves_ctry3   1.0723     0.3078   3.483 0.000536 ***
taves_ctry4   1.7546     0.2647   6.629 8.29e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 11.88 on 533 degrees of freedom
Multiple R-squared:  0.1099,    Adjusted R-squared:  0.1032 
F-statistic: 16.45 on 4 and 533 DF,  p-value: 1.021e-12

This approach suggests that all of these comparisons are significant, except for the US vs. Thailand (p = 0.144).

Polychoric factor analysis

Factor loadings

Matrix was not positive definite, smoothing was doneLoading required namespace: GPArotation
Joining, by = "question"
Joining, by = "question"

Here’s a plot of an exploratory factor analysis using polychoric correlations (since we’re working with yes/no responses), an oblique rotation (“oblimin,” which allows factors to correlate with each other), and a “weighted least squares” factoring method (because other methods throw convergence errors).

It’s very important to note that this might not be the “right” number of factors to extract here - different guidelines made different suggestions, ranging from 2 or 3 factors up to 16. 7 factors seemed like something of a middle ground, and seemed to produce sensible results.

Factor scores

Matrix was not positive definite, smoothing was doneJoining, by = "taves_subj"

Here’s a plot of factor scores, by country, using the factor analysis solution illustrated above. The light, colorful dots are individual participants; the block dots are means by country and 95% bootstrapped confidence intervals. For each factor I printed out the text of the item that loaded most strongly on that factor - see the previous graph for more about the relationships between items and factors.


|===============                                        | 29% ~5 s remaining     
|=======================                                | 43% ~3 s remaining     
|===============================                        | 57% ~2 s remaining     
|=======================================                | 71% ~1 s remaining     
|================================================       | 89% ~0 s remaining     

Joining, by = "taves_subj"
Joining, by = "question"

Raw data

The following plots show raw data: how many participants said yes to each question, broken down by country. I’ve split up the questions into which factor they loaded most strongly on (see top left corner of each of the following plots). The dotted line marks the 50% point (50% of participants in that country said “yes” to this question). Note that this does not take into account missing data - i.e., the proportion of “no” responses is not necessarily equal to 1 - the proportion of “yes” responses.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

LS0tCnRpdGxlOiAiS1cgZmlyc3QgcGFzcyBhdCBUYXZlcyBkYXRhIgpkYXRlOiAyMDE4LTA3LTMwCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClRoaXMgaXMgS2FyYSdzIHF1aWNrIGZpcnN0IHBhc3MgYXQgbG9va2luZyBhdCB0aGUgVGF2ZXMgZGF0YSwgbG9va2luZyBvbmx5IGF0IHBhcnRpY2lwYW50J3MgZW5kb3JzZW1lbnRzIG9mIHdoZXRoZXIgb3Igbm90IHRoZXkgaGFkIGhhZCBjZXJ0YWluIGV4cGVyaWVuY2VzIChub3QgdGhlaXIgYXNzZXNzbWVudCBvZiB3aGF0IHRoZXkgbWVhbnQsIGV0Yy4pLgoKYGBge3IgZ2xvYmFsX29wdGlvbnMsIGluY2x1ZGUgPSBGfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1GLCB3YXJuaW5nPUYsIGNhY2hlPUYsIG1lc3NhZ2U9RikKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IEZ9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHJlYWR4bCkKbGlicmFyeShwc3ljaCkKbGlicmFyeShmYWN0b2V4dHJhKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0KZDAgPC0gcmVhZF9leGNlbCgiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy9UYXZlcy9UYXZlc19mdWxsX2RhdGFzZXQueGxzeCIsIHNoZWV0ID0gNSlbLTEsXSAjIHJlbW92ZSBxdWVzdGlvbiB0ZXh0CgpxdWVzdGlvbl9rZXkgPC0gcmVhZF9leGNlbCgiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy9UYXZlcy9UYXZlc19mdWxsX2RhdGFzZXQueGxzeCIsIHNoZWV0ID0gMylbLDE6NV0gIyBvbmx5IHJlbGV2YW50IGNvbHVtbnMKCm5faXRlciA8LSA1MDAwCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBGfQpkX2Jhc2UgPC0gZDAgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHNlbGVjdCh0YXZlc19zdWJqLCB0YXZlc18wMTp0YXZlc182MGUpICU+JQogIHNlbGVjdCgtZW5kc193aXRoKCJhIiksIC1lbmRzX3dpdGgoImIiKSwgLWVuZHNfd2l0aCgiYyIpLCAKICAgICAgICAgLWVuZHNfd2l0aCgiZCIpLCAtZW5kc193aXRoKCJlIikpICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgZmlsdGVyKHRhdmVzX3N1YmogIT0gIjQwNTQ4IikgJT4lICMgcmVtb3ZlIG9uZSBkdXBsaWNhdGUKICAjIGNvbHVtbl90b19yb3duYW1lcygidGF2ZXNfc3ViaiIpICU+JQogIG11dGF0ZV9hdCh2YXJzKC10YXZlc19zdWJqKSwKICAgICAgICAgICAgZnVucyhmYWN0b3IodG9sb3dlciguKSwgbGV2ZWxzID0gYygibm8iLCAieWVzIikpKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoLXRhdmVzX3N1YmopLAogICAgICAgICAgICBmdW5zKG51bSA9IGFzLm51bWVyaWMoLikgLSAxKSkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJ0YXZlc19zdWJqIikgJT4lCiAgc2VsZWN0KC1zdGFydHNfd2l0aCgidGF2ZXNfNTMiKSkKCmRfYmFzZV9udW0gPC0gZF9iYXNlICU+JQogIHNlbGVjdChlbmRzX3dpdGgoIl9udW0iKSkKYGBgCgpOb3RlczogcGVyIG91ciBjb252ZXJzYXRpb24gd2l0aCBOaWtraSwgd2UgYXJlIGRyb3BwaW5nIG9uZSBxdWVzdGlvbiAoIzUzKSwgd2hpY2ggd2FzIGEgcmVwZWF0ZWQgcXVlc3Rpb24gaW4gYWxsIHNpdGVzIGV4Y2VwdCBmb3IgQ2hpbmEuCgoKIyBPdmVyYWxsIGNvdW50cwoKRmlyc3QsIGxldCdzIGxvb2sgYXQgdGhlIG92ZXJhbGwgY291bnRzIG9mICJ5ZXMiIHJlc3BvbnNlcywgYnkgc2l0ZToKCmBgYHtyfQpkX2NvdW50cyA8LSBkX2Jhc2VfbnVtICU+JSAKICBzZWxlY3QoZW5kc193aXRoKCJfbnVtIikpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigidGF2ZXNfc3ViaiIpICU+JQogIGdhdGhlcihxdWVzdGlvbiwgcmVzcG9uc2UsIC10YXZlc19zdWJqKSAlPiUKICBncm91cF9ieSh0YXZlc19zdWJqKSAlPiUKICBzdW1tYXJpc2UodG90YWwgPSBzdW0ocmVzcG9uc2UsIG5hLnJtID0gVCkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBsZWZ0X2pvaW4oZDAgJT4lIHNlbGVjdCh0YXZlc19zdWJqLCB0YXZlc19jdHJ5KSkgJT4lCiAgZGlzdGluY3QoKSAlPiUKICBtdXRhdGUodGF2ZXNfY3RyeSA9IGZhY3Rvcih0YXZlc19jdHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIlVTIiwgIlRoYWlsYW5kIiwgIkNoaW5hIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2hhbmEiLCAiVmFudWF0dSIpKSkKYGBgCgpgYGB7cn0KZF9jb3VudHMgJT4lIAogIGdyb3VwX2J5KHRhdmVzX2N0cnkpICU+JSAKICBzdW1tYXJpc2UobiA9IG4oKSwKICAgICAgICAgICAgbWVhbiA9IG1lYW4odG90YWwsIG5hLnJtID0gVCksCiAgICAgICAgICAgIHNkID0gc2QodG90YWwsIG5hLnJtID0gVCksCiAgICAgICAgICAgIG1lZGlhbiA9IG1lZGlhbih0b3RhbCwgbmEucm0gPSBUKSkgJT4lCiAgZGF0YS5mcmFtZSgpCmBgYAoKQW5kIG5vdyBsZXQncyBjb21wYXJlIGVhY2ggY291bnRyeSB0byB0aGUgY291bnRyeSB3aXRoIHRoZSBuZXh0LW1vc3QgInllcyIgcmVzcG9uc2VzOiBjb250cmFzdCAjMSB3aWxsIGJlIFVTIHZzLiBUaGFpbGFuZCwgIzIgd2lsbCBiZSBUaGFpbGFuZCB2cy4gQ2hpbmEsIGV0Yy46CgpgYGB7cn0KY29udHJhc3RzKGRfY291bnRzJHRhdmVzX2N0cnkpIDwtIGNvbnRyLmhlbG1lcnQoNSkKIyBjb250cmFzdHMoZF9jb3VudHMkdGF2ZXNfY3RyeSkKCnIgPC0gbG0odG90YWwgfiB0YXZlc19jdHJ5LCBkX2NvdW50cykKc3VtbWFyeShyKQpgYGAKClRoaXMgYXBwcm9hY2ggc3VnZ2VzdHMgdGhhdCBhbGwgb2YgdGhlc2UgY29tcGFyaXNvbnMgYXJlIHNpZ25pZmljYW50LCBleGNlcHQgZm9yIHRoZSBVUyB2cy4gVGhhaWxhbmQgKF9wXyA9IGByIHJvdW5kKHN1bW1hcnkocikkY29lZmZpY2llbnRzWzIsIDRdLCAzKWApLgoKIyBQb2x5Y2hvcmljIGZhY3RvciBhbmFseXNpcwoKYGBge3IsIGluY2x1ZGUgPSBGfQojIFdMUyBpcyB0aGUgZmlyc3QgbWV0aG9kIHRyaWVkIHRoYXQgZG9lc24ndCB0aHJvdWdoIGNvbnZlcmdlbmNlL3Njb3JlIGVycm9ycwpmYS5wYXJhbGxlbChkX2Jhc2VfbnVtLCBjb3IgPSAicG9seSIsIGZtID0gIndscyIpIApgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0KVlNTKGRfYmFzZV9udW0sIGNvciA9ICJwb2x5IiwgZm0gPSAid2xzIikKYGBgCgoKYGBge3IsIGluY2x1ZGUgPSBGfQojIGZhKGRfYmFzZV9udW0sIGNvciA9ICJwb2x5IiwgbmZhY3RvcnMgPSA3LCByb3RhdGUgPSAib2JsaW1pbiIsIG4uaXRlciA9IG5faXRlcikgJT4lIAojICAgZmEuc29ydCgpCmBgYAoKIyMgRmFjdG9yIGxvYWRpbmdzCgpgYGB7cn0KbG9hZGluZ3MgPC0gZmEoZF9iYXNlX251bSwgY29yID0gInBvbHkiLCBuZmFjdG9ycyA9IDcsIHJvdGF0ZSA9ICJvYmxpbWluIiwgZm0gPSAid2xzIikkbG9hZGluZ3NbXSAlPiUgCiAgZmEuc29ydCgpICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInF1ZXN0aW9uIikgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uID0gZ3N1YigiX251bSIsICIiLCBxdWVzdGlvbikpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1xdWVzdGlvbikKCmxvYWRpbmdzX29yZGVyIDwtIGxvYWRpbmdzICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uKSAlPiUKICB0b3BfbigxLCBhYnMobG9hZGluZykpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdChxdWVzdGlvbiwgb3JkZXIpCmBgYAoKYGBge3J9CmxvYWRpbmdzX25hbWVkIDwtIGxvYWRpbmdzICU+JQogIGZ1bGxfam9pbihsb2FkaW5nc19vcmRlcikgJT4lCiAgbGVmdF9qb2luKHF1ZXN0aW9uX2tleSAlPiUKICAgICAgICAgICAgICByZW5hbWUocXVlc3Rpb24gPSBgVmFyaWFibGUgTmFtZSAtIFZFUlNJT04gMSAtLSBhbGwgdmFyaWFibGVzIGluIHZlcnNpb24yIGhhdmUgYmVlbiByZW5hbWVkIHRvIHJlZmxlY3QgdGhlc2UgdmFyYWlibGUgbmFtZXNgLAogICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbl90ZXh0ID0gYFF1ZXN0aW9uIC0gVkVSU0lPTiAxYCkpICU+JQogIHNlbGVjdChxdWVzdGlvbiwgcXVlc3Rpb25fdGV4dCwgb3JkZXIsIGZhY3RvciwgbG9hZGluZykgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uX3RleHQgPSBnc3ViKCJcciIsICIgIiwgcXVlc3Rpb25fdGV4dCksCiAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBnc3ViKCJcbiIsICIgIiwgcXVlc3Rpb25fdGV4dCksCiAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBnc3ViKCIgICIsICIgIiwgcXVlc3Rpb25fdGV4dCksCiAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBnc3ViKCLigJrDhMO0IiwgIiciLCBxdWVzdGlvbl90ZXh0KSwKICAgICAgICAgcXVlc3Rpb25fdGV4dCA9IGdzdWIoIuKAmsOEw7oiLCAiJyIsIHF1ZXN0aW9uX3RleHQpLAogICAgICAgICBxdWVzdGlvbl90ZXh0ID0gZ3N1Yigi4oCaw4TDuSIsICInIiwgcXVlc3Rpb25fdGV4dCkpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBsb2FkaW5nc19uYW1lZApgYGAKCkhlcmUncyBhIHBsb3Qgb2YgYW4gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzIHVzaW5nIHBvbHljaG9yaWMgY29ycmVsYXRpb25zIChzaW5jZSB3ZSdyZSB3b3JraW5nIHdpdGggeWVzL25vIHJlc3BvbnNlcyksIGFuIG9ibGlxdWUgcm90YXRpb24gKCJvYmxpbWluLCIgd2hpY2ggYWxsb3dzIGZhY3RvcnMgdG8gY29ycmVsYXRlIHdpdGggZWFjaCBvdGhlciksIGFuZCBhICJ3ZWlnaHRlZCBsZWFzdCBzcXVhcmVzIiBmYWN0b3JpbmcgbWV0aG9kIChiZWNhdXNlIG90aGVyIG1ldGhvZHMgdGhyb3cgY29udmVyZ2VuY2UgZXJyb3JzKS4KCkl0J3MgdmVyeSBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgbWlnaHQgbm90IGJlIHRoZSAicmlnaHQiIG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QgaGVyZSAtIGRpZmZlcmVudCBndWlkZWxpbmVzIG1hZGUgZGlmZmVyZW50IHN1Z2dlc3Rpb25zLCByYW5naW5nIGZyb20gMiBvciAzIGZhY3RvcnMgdXAgdG8gMTYuIDcgZmFjdG9ycyBzZWVtZWQgbGlrZSBzb21ldGhpbmcgb2YgYSBtaWRkbGUgZ3JvdW5kLCBhbmQgc2VlbWVkIHRvIHByb2R1Y2Ugc2Vuc2libGUgcmVzdWx0cy4KCmBgYHtyLCBmaWcud2lkdGggPSA4LCBmaWcuYXNwID0gMX0KZ2dwbG90KGxvYWRpbmdzX25hbWVkICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJXTFMyIiwgIldMUzYiLCAiV0xTMSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldMUzUiLCAiV0xTMyIsICJXTFM3IiwgIldMUzQiKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGV2ZWxzID0gYygiV0xTMiIsICJXTFM2IiwgIldMUzciLCAiV0xTMSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICAiV0xTNSIsICJXTFMzIiwgIldMUzQiKSkpLAogICAgICAgYWVzKHggPSBmYWN0b3IsIHkgPSByZW9yZGVyKHF1ZXN0aW9uX3RleHQsIGRlc2Mob3JkZXIpKSwgCiAgICAgICAgICAgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwogICMgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMC41LCB4bWF4ID0gMS41LCB5bWluID0gNTAuNSwgeW1heCA9IDYwLjUsCiAgIyAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMCwgc2l6ZSA9IDAuNikgKwogICMgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMC41LCB4bWF4ID0gMS41LCB5bWluID0gNDcuNSwgeW1heCA9IDQ4LjUsCiAgIyAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMCwgc2l6ZSA9IDAuNikgKwogICMgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMS41LCB4bWF4ID0gMi41LCB5bWluID0gMzguNSwgeW1heCA9IDQ3LjUsCiAgIyAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMCwgc2l6ZSA9IDAuNikgKwogICMgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMi41LCB4bWF4ID0gMy41LCB5bWluID0gMzMuNSwgeW1heCA9IDM4LjUsCiAgIyAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMCwgc2l6ZSA9IDAuNikgKwogICMgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMi41LCB4bWF4ID0gMy41LCB5bWluID0gMzAuNSwgeW1heCA9IDMyLjUsCiAgIyAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMCwgc2l6ZSA9IDAuNikgKwogICMgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMy41LCB4bWF4ID0gNC41LCB5bWluID0gMTkuNSwgeW1heCA9IDI5LjUsCiAgIyAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMCwgc2l6ZSA9IDAuNikgKwogICMgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gNC41LCB4bWF4ID0gNS41LCB5bWluID0gMTIuNSwgeW1heCA9IDE4LjUsCiAgIyAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMCwgc2l6ZSA9IDAuNikgKwogICMgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gNS41LCB4bWF4ID0gNi41LCB5bWluID0gNS41LCB5bWF4ID0gMTIuNSwKICAjICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLCBzaXplID0gMC42KSArCiAgIyBhbm5vdGF0ZSgicmVjdCIsIHhtaW4gPSA2LjUsIHhtYXggPSA3LjUsIHltaW4gPSAxLjUsIHltYXggPSA1LjUsCiAgIyAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMCwgc2l6ZSA9IDAuNikgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAyMCkpICsKICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnMoeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMgRmFjdG9yIHNjb3JlcwoKYGBge3J9CnNjb3JlcyA8LSBmYShkX2Jhc2VfbnVtLCBjb3IgPSAicG9seSIsIG5mYWN0b3JzID0gNywgcm90YXRlID0gIm9ibGltaW4iLCBmbSA9ICJ3bHMiKSRzY29yZXNbXSAlPiUgCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigidGF2ZXNfc3ViaiIpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCAtdGF2ZXNfc3ViaikgJT4lCiAgbGVmdF9qb2luKGQwICU+JSBzZWxlY3QodGF2ZXNfc3ViaiwgdGF2ZXNfY3RyeSkpICU+JQogIG11dGF0ZSh0YXZlc19jdHJ5ID0gZmFjdG9yKHRhdmVzX2N0cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiVVMiLCAiR2hhbmEiLCAiVGhhaWxhbmQiLCAiQ2hpbmEiLCAiVmFudWF0dSIpKSwKICAgICAgICAgZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIldMUzIiLCAiV0xTNiIsICJXTFMxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldMUzUiLCAiV0xTMyIsICJXTFM3IiwgIldMUzQiKSkpCmBgYAoKSGVyZSdzIGEgcGxvdCBvZiBmYWN0b3Igc2NvcmVzLCBieSBjb3VudHJ5LCB1c2luZyB0aGUgZmFjdG9yIGFuYWx5c2lzIHNvbHV0aW9uIGlsbHVzdHJhdGVkIGFib3ZlLiBUaGUgbGlnaHQsIGNvbG9yZnVsIGRvdHMgYXJlIGluZGl2aWR1YWwgcGFydGljaXBhbnRzOyB0aGUgYmxvY2sgZG90cyBhcmUgbWVhbnMgYnkgY291bnRyeSBhbmQgOTUlIGJvb3RzdHJhcHBlZCBjb25maWRlbmNlIGludGVydmFscy4gRm9yIGVhY2ggZmFjdG9yIEkgcHJpbnRlZCBvdXQgdGhlIHRleHQgb2YgdGhlIGl0ZW0gdGhhdCBsb2FkZWQgbW9zdCBzdHJvbmdseSBvbiB0aGF0IGZhY3RvciAtIHNlZSB0aGUgcHJldmlvdXMgZ3JhcGggZm9yIG1vcmUgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBpdGVtcyBhbmQgZmFjdG9ycy4KCmBgYHtyLCBmaWcud2lkdGggPSA1LCBmaWcuYXNwID0gMC42N30Kc2NvcmVzICU+JQogIGdyb3VwX2J5KGZhY3RvciwgdGF2ZXNfY3RyeSkgJT4lCiAgbGFuZ2NvZzo6bXVsdGlfYm9vdF9zdGFuZGFyZChjb2wgPSAic2NvcmUiLCBuYS5ybSA9IFQpICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJXTFMyIiwgIldMUzYiLCAiV0xTMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXTFM1IiwgIldMUzMiLCAgIldMUzciLCAiV0xTNCIpKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gdGF2ZXNfY3RyeSkpICsKICBmYWNldF93cmFwKH4gZmFjdG9yLCBucm93ID0gMikgKwogIGdlb21fcG9pbnQoZGF0YSA9IHNjb3JlcywgCiAgICAgICAgICAgICBhZXMoeSA9IHNjb3JlLCBjb2xvciA9IHRhdmVzX2N0cnkpLCAKICAgICAgICAgICAgIGFscGhhID0gMC4yLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcihoZWlnaHQgPSAwKSkgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeSA9IG1lYW4sIHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwgCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChkYXRhID0gbG9hZGluZ3NfbmFtZWQgJT4lCiAgICAgICAgICAgICAgZ3JvdXBfYnkoZmFjdG9yKSAlPiUKICAgICAgICAgICAgICB0b3BfbigxLCBhYnMobG9hZGluZykpICU+JQogICAgICAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIldMUzIiLCAiV0xTNiIsICJXTFM3IiwgIldMUzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0xTNSIsICJXTFMzIiwgIldMUzQiKSksCiAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBwYXN0ZTAoImV4YW1wbGUgaXRlbTogIiwgcXVlc3Rpb25fdGV4dCksCiAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBnc3ViKCcoLnsxLDQwfSkoXFxzfCQpJywgJ1xcMVxuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25fdGV4dCkpLAogICAgICAgICAgICBhZXMobGFiZWwgPSBxdWVzdGlvbl90ZXh0KSwKICAgICAgICAgICAgeCA9IDAuNSwgeSA9IDQsIGhqdXN0ID0gMCwgdmp1c3QgPSAxLCBzaXplID0gMykgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHggPSAic2l0ZSIsIHkgPSAiZmFjdG9yIHNjb3JlIikKYGBgCgpgYGB7cn0KZF9yZXNwb25zZXNfbmFtZWQgPC0gZF9iYXNlICU+JQogIHNlbGVjdCgtZW5kc193aXRoKCJfbnVtIikpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigidGF2ZXNfc3ViaiIpICU+JQogIGxlZnRfam9pbihkMCAlPiUgZGlzdGluY3QodGF2ZXNfc3ViaiwgdGF2ZXNfY3RyeSkpICU+JQogIGdhdGhlcihxdWVzdGlvbiwgcmVzcG9uc2UsIC1jKHRhdmVzX3N1YmosIHRhdmVzX2N0cnkpKSAlPiUKICBsZWZ0X2pvaW4obG9hZGluZ3NfbmFtZWQgJT4lCiAgICAgICAgICAgICAgZ3JvdXBfYnkocXVlc3Rpb24pICU+JQogICAgICAgICAgICAgIHRvcF9uKDEsIGFicyhsb2FkaW5nKSkgJT4lCiAgICAgICAgICAgICAgdW5ncm91cCgpKSAlPiUKICBtdXRhdGUodGF2ZXNfY3RyeSA9IGZhY3Rvcih0YXZlc19jdHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIlVTIiwgIkdoYW5hIiwgIlRoYWlsYW5kIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSwKICAgICAgICAgZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIldMUzIiLCAiV0xTNiIsICJXTFM3IiwgIldMUzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0xTNSIsICJXTFMzIiwgIldMUzQiKSkpCmBgYAojIyBSYXcgZGF0YQoKVGhlIGZvbGxvd2luZyBwbG90cyBzaG93IHJhdyBkYXRhOiBob3cgbWFueSBwYXJ0aWNpcGFudHMgc2FpZCB5ZXMgdG8gZWFjaCBxdWVzdGlvbiwgYnJva2VuIGRvd24gYnkgY291bnRyeS4gSSd2ZSBzcGxpdCB1cCB0aGUgcXVlc3Rpb25zIGludG8gd2hpY2ggZmFjdG9yIHRoZXkgbG9hZGVkIG1vc3Qgc3Ryb25nbHkgb24gKHNlZSB0b3AgbGVmdCBjb3JuZXIgb2YgZWFjaCBvZiB0aGUgZm9sbG93aW5nIHBsb3RzKS4gVGhlIGRvdHRlZCBsaW5lIG1hcmtzIHRoZSA1MCUgcG9pbnQgKDUwJSBvZiBwYXJ0aWNpcGFudHMgaW4gdGhhdCBjb3VudHJ5IHNhaWQgInllcyIgdG8gdGhpcyBxdWVzdGlvbikuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IG1pc3NpbmcgZGF0YSAtIGkuZS4sIHRoZSBwcm9wb3J0aW9uIG9mICJubyIgcmVzcG9uc2VzIGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byAxIC0gdGhlIHByb3BvcnRpb24gb2YgInllcyIgcmVzcG9uc2VzLgoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAwLjh9CmRfcmVzcG9uc2VzX25hbWVkICU+JQogIGZpbHRlcihmYWN0b3IgPT0gIldMUzIiKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uX3RleHQgPSBnc3ViKCcoLnsxLDQwfSkoXFxzfCQpJywgJ1xcMVxuJywgcXVlc3Rpb25fdGV4dCkpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdGV4dCwgZGVzYyhvcmRlcikpLCAKICAgICAgICAgICAgIGZpbGwgPSB0YXZlc19jdHJ5LCBhbHBoYSA9IHJlc3BvbnNlKSkgKwogIGZhY2V0X2dyaWQofiB0YXZlc19jdHJ5LCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSwgbHR5ID0gMikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBndWlkZSA9ICJub25lIikgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKGd1aWRlID0gIm5vbmUiKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3I6IFdMUzIiLAogICAgICAgeCA9ICIiLCB5ID0gInByb3BvcnRpb24gc2F5aW5nIFlFUyIpICsKICB0aGVtZV9idygpICsKICBjb29yZF9mbGlwKCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNSwgZmlnLmFzcCA9IDAuNn0KZF9yZXNwb25zZXNfbmFtZWQgJT4lCiAgZmlsdGVyKGZhY3RvciA9PSAiV0xTNiIpICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBtdXRhdGUocXVlc3Rpb25fdGV4dCA9IGdzdWIoJyguezEsNDB9KShcXHN8JCknLCAnXFwxXG4nLCBxdWVzdGlvbl90ZXh0KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihxdWVzdGlvbl90ZXh0LCBkZXNjKG9yZGVyKSksIAogICAgICAgICAgICAgZmlsbCA9IHRhdmVzX2N0cnksIGFscGhhID0gcmVzcG9uc2UpKSArCiAgZmFjZXRfZ3JpZCh+IHRhdmVzX2N0cnksIHNjYWxlcyA9ICJmcmVlIikgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC41LCBsdHkgPSAyKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUoZ3VpZGUgPSAibm9uZSIpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvcjogV0xTNiIsCiAgICAgICB4ID0gIiIsIHkgPSAicHJvcG9ydGlvbiBzYXlpbmcgWUVTIikgKwogIHRoZW1lX2J3KCkgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA1LCBmaWcuYXNwID0gMC42fQpkX3Jlc3BvbnNlc19uYW1lZCAlPiUKICBmaWx0ZXIoZmFjdG9yID09ICJXTFM3IikgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIG11dGF0ZShxdWVzdGlvbl90ZXh0ID0gZ3N1YignKC57MSw0MH0pKFxcc3wkKScsICdcXDFcbicsIHF1ZXN0aW9uX3RleHQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3RleHQsIGRlc2Mob3JkZXIpKSwgCiAgICAgICAgICAgICBmaWxsID0gdGF2ZXNfY3RyeSwgYWxwaGEgPSByZXNwb25zZSkpICsKICBmYWNldF9ncmlkKH4gdGF2ZXNfY3RyeSwgc2NhbGVzID0gImZyZWUiKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICBzY2FsZV9hbHBoYV9kaXNjcmV0ZShndWlkZSA9ICJub25lIikgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yOiBXTFM3IiwKICAgICAgIHggPSAiIiwgeSA9ICJwcm9wb3J0aW9uIHNheWluZyBZRVMiKSArCiAgdGhlbWVfYncoKSArCiAgY29vcmRfZmxpcCgpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAwLjZ9CmRfcmVzcG9uc2VzX25hbWVkICU+JQogIGZpbHRlcihmYWN0b3IgPT0gIldMUzEiKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uX3RleHQgPSBnc3ViKCcoLnsxLDQwfSkoXFxzfCQpJywgJ1xcMVxuJywgcXVlc3Rpb25fdGV4dCkpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdGV4dCwgZGVzYyhvcmRlcikpLCAKICAgICAgICAgICAgIGZpbGwgPSB0YXZlc19jdHJ5LCBhbHBoYSA9IHJlc3BvbnNlKSkgKwogIGZhY2V0X2dyaWQofiB0YXZlc19jdHJ5LCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSwgbHR5ID0gMikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBndWlkZSA9ICJub25lIikgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKGd1aWRlID0gIm5vbmUiKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3I6IFdMUzEiLAogICAgICAgeCA9ICIiLCB5ID0gInByb3BvcnRpb24gc2F5aW5nIFlFUyIpICsKICB0aGVtZV9idygpICsKICBjb29yZF9mbGlwKCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNSwgZmlnLmFzcCA9IDAuOH0KZF9yZXNwb25zZXNfbmFtZWQgJT4lCiAgZmlsdGVyKGZhY3RvciA9PSAiV0xTNSIpICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBtdXRhdGUocXVlc3Rpb25fdGV4dCA9IGdzdWIoJyguezEsNDB9KShcXHN8JCknLCAnXFwxXG4nLCBxdWVzdGlvbl90ZXh0KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihxdWVzdGlvbl90ZXh0LCBkZXNjKG9yZGVyKSksIAogICAgICAgICAgICAgZmlsbCA9IHRhdmVzX2N0cnksIGFscGhhID0gcmVzcG9uc2UpKSArCiAgZmFjZXRfZ3JpZCh+IHRhdmVzX2N0cnksIHNjYWxlcyA9ICJmcmVlIikgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC41LCBsdHkgPSAyKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUoZ3VpZGUgPSAibm9uZSIpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvcjogV0xTNSIsCiAgICAgICB4ID0gIiIsIHkgPSAicHJvcG9ydGlvbiBzYXlpbmcgWUVTIikgKwogIHRoZW1lX2J3KCkgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA1LCBmaWcuYXNwID0gMC42fQpkX3Jlc3BvbnNlc19uYW1lZCAlPiUKICBmaWx0ZXIoZmFjdG9yID09ICJXTFMzIikgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIG11dGF0ZShxdWVzdGlvbl90ZXh0ID0gZ3N1YignKC57MSw0MH0pKFxcc3wkKScsICdcXDFcbicsIHF1ZXN0aW9uX3RleHQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3RleHQsIGRlc2Mob3JkZXIpKSwgCiAgICAgICAgICAgICBmaWxsID0gdGF2ZXNfY3RyeSwgYWxwaGEgPSByZXNwb25zZSkpICsKICBmYWNldF9ncmlkKH4gdGF2ZXNfY3RyeSwgc2NhbGVzID0gImZyZWUiKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICBzY2FsZV9hbHBoYV9kaXNjcmV0ZShndWlkZSA9ICJub25lIikgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yOiBXTFMzIiwKICAgICAgIHggPSAiIiwgeSA9ICJwcm9wb3J0aW9uIHNheWluZyBZRVMiKSArCiAgdGhlbWVfYncoKSArCiAgY29vcmRfZmxpcCgpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAwLjZ9CmRfcmVzcG9uc2VzX25hbWVkICU+JQogIGZpbHRlcihmYWN0b3IgPT0gIldMUzQiKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uX3RleHQgPSBnc3ViKCcoLnsxLDQwfSkoXFxzfCQpJywgJ1xcMVxuJywgcXVlc3Rpb25fdGV4dCkpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdGV4dCwgZGVzYyhvcmRlcikpLCAKICAgICAgICAgICAgIGZpbGwgPSB0YXZlc19jdHJ5LCBhbHBoYSA9IHJlc3BvbnNlKSkgKwogIGZhY2V0X2dyaWQofiB0YXZlc19jdHJ5LCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSwgbHR5ID0gMikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBndWlkZSA9ICJub25lIikgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKGd1aWRlID0gIm5vbmUiKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3I6IFdMUzQiLAogICAgICAgeCA9ICIiLCB5ID0gInByb3BvcnRpb24gc2F5aW5nIFlFUyIpICsKICB0aGVtZV9idygpICsKICBjb29yZF9mbGlwKCkKYGBgCgoKCgoKCmBgYHtyLCBmaWcud2lkdGggPSAxMiwgZmlnLmFzcCA9IDAuMzMsIGluY2x1ZGUgPSBGfQpkX2Jhc2VfbnVtICU+JQogIHJlbW92ZV9taXNzaW5nKCkgJT4lCiAgZGlzdCgpICU+JSAKICBoY2x1c3QoKSAlPiUKICBwbG90KCkKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IEZ9CmhrbWVhbnM3IDwtIGRfYmFzZV9udW0gJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpICU+JQogIGdhdGhlcihxdWVzdGlvbiwgcmVzcG9uc2UsIC1zdWJpZCkgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uID0gZ3N1YigiX251bSIsICIiLCBxdWVzdGlvbikpICU+JQogIGxlZnRfam9pbihsb2FkaW5nc19uYW1lZCAlPiUgZGlzdGluY3QocXVlc3Rpb24sIHF1ZXN0aW9uX3RleHQpKSAlPiUKICBzZWxlY3QoLXF1ZXN0aW9uKSAlPiUKICBzcHJlYWQocXVlc3Rpb25fdGV4dCwgcmVzcG9uc2UpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygic3ViaWQiKSAlPiUKICByZW1vdmVfbWlzc2luZygpICU+JQogIHQoKSAlPiUKICBoa21lYW5zKDcpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAyLCBpbmNsdWRlID0gRn0KaGttZWFuczcgJT4lIAogIGZ2aXpfZGVuZChwYWxldHRlID0gIkRhcmsyIiwgaG9yaXogPSBGLCBjb2xvcl9sYWJlbHNfYnlfayA9IFRSVUUpICsgCiAgeWxpbSgtNjAsIDIwKQpgYGAKCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDAuNjcsIGluY2x1ZGUgPSBGfQojIGhrbWVhbnM3ICU+JSBmdml6X2NsdXN0ZXIocGFsZXR0ZSA9ICJEYXJrMiIpCmBgYAoK